package solution;

import java.util.LinkedList;

/**
 * <a href="https://www.nowcoder.com/practice/2cc32b88fff94d7e8fd458b8c7b25ec1?tpId=117&&tqId=37836&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking">
 * NC112 进制转换</a>
 *
 * @author or2
 * @Description 给定一个十进制数 M ，以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。
 * <p>
 * 当 N 大于 10 以后， 应在结果中使用大写字母表示大于 10 的一位，如 'A' 表示此位为 10 ， 'B' 表示此位为 11 。
 * <p>
 * 若 M 为负数，应在结果中保留负号。
 * @create 2021年09月06日 时间: 21:49
 */
public class NC112 {
    /**
     * 进制转换
     *
     * @param M int整型 给定整数
     * @param N int整型 转换到的进制
     * @return string字符串
     */
    public String solve(int M, int N) {
        LinkedList<Integer> ansTemp = new LinkedList<>();
        StringBuilder ans = new StringBuilder();
        if (M < 0) {
            ans.append("-");
            M = -M;
        }
        while (M > 0) {
//            取余数
            int remainder = M % N;
            ansTemp.addFirst(remainder);
//            取下一高位
            M /= N;
        }
        for (Integer integer : ansTemp) {
            if (integer < 10) {
                ans.append((char) (integer + '0'));
            } else {
                ans.append((char) (integer - 10 + 'A'));
            }
        }

        return ans.toString();
    }
}
